package NO2_String;

/**
 * 2025-8-7
 * 力扣 - 28. 找出字符串中第一个匹配项的下标
 * <p>
 * 给你两个字符串 haystack 和 needle ，
 * 请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标（下标从 0 开始）。
 * 如果 needle 不是 haystack 的一部分，则返回  -1 。
 * </p>
 * 输入：haystack = "sadbutsad", needle = "sad"
 * 输出：0
 * 解释："sad" 在下标 0 和 6 处匹配。
 * 第一个匹配项的下标是 0 ，所以返回 0 。
 */
public class StrStrMain {
    public static void main(String[] args) {
        String haystack = "sadbutsad";
        String needle = "sad";
        System.out.println(strStr(haystack, needle));
//        int count = haystack.indexOf(needle);
    }

    public static int strStr(String haystack, String needle) {
        if (needle.isEmpty()){
            return 0;
        }

        int n = haystack.length();
        int m = needle.length();

        // 只需要遍历到n-m的位置，因为后面长度不够了
        for (int i = 0; i <= n - m; i++) {
            int j;
            // 从当前位置i开始，逐个字符比较
            for (j = 0; j < m; j++) {
                if (haystack.charAt(i + j) != needle.charAt(j)) {
                    break; // 发现不匹配，跳出内层循环
                }
            }
            // 如果j走到了needle的末尾，说明完全匹配
            if (j == m) {
                return i;
            }
        }

        return -1;
    }
}
